const baseURL = import.meta.env.VITE_API_URL

/**
 * 发起网络请求
 *
 * @param url 请求的URL地址
 * @param method 请求方法，默认为'post'，支持'get'、'post'等HTTP方法
 * @param params 请求参数，默认为空对象{}
 * @param header 请求头，默认为空对象{}
 * @param ext 其他配置，默认为空对象{}
 * @returns 返回一个Promise对象，resolve时返回响应数据，reject时返回错误信息
 */
function request(url, method = 'post', params = {}, header = {}, ext = {}) {
  method = method.toUpperCase()
  return new Promise(function (resolve, reject) {
    ;(async function () {
      try {
        let res = await uni.request({
          url: baseURL + url,
          data: {
            ...params,
          },
          header: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
            'X-Requested-With': 'XMLHttpRequest',
            ...header,
          },
          method: method,
          ...ext,
        })
        if (res.statusCode == 200) {
          resolve(res.data)
        } else {
          reject(new Error(res?.errMsg ?? '请求失败'))
        }
      } catch (error) {
        reject(error)
      }
    })()
  })
}

export default request
